package com.interview.controller;

import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@RestController
public class ImageController {



    @PostMapping("/upload")
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile uploadFile) throws IOException {
        if (uploadFile.isEmpty()) {
            return "上传失败，请选择文件";
        }

        //使用fileupload组件完成文件上传
        //上传的位置   这句代码就是将文件上传到当前服务器的根目录下uploads文件夹里添加
        // 当然也可以以指定本地位置   比如 String path1="D:\\uploads\\";
        String path = ResourceUtils.getURL("classpath:").getPath()+"uploads/";

        //判断  路径是否存在  如果没有此文件那么就创建一个uploads
        File file = new File(path);
        if (!file.exists()) {
            //创建该文件夹
            file.mkdirs();
        }
        //判断文件上传表单是否是空
        boolean empty = uploadFile.isEmpty();
        //如果是空 的file表单那么 跳过
        if (!empty) {
            //获取上传文件的名字
            String filename = uploadFile.getOriginalFilename();
            System.out.println(filename);

            // 需要保证图片不会被重复上传  说以需要使用原图片的名称 如果重复就进行覆盖

//            //随机生成32位文件名称  防止以后上传的文件被覆盖
//            String uuid = UUID.randomUUID().toString().replace("-", "");
//            filename = uuid + "_" + filename;  //随机生成32位文件名称 加上原来文件名  将文件名变成唯一
            //完成文件上传
            uploadFile.transferTo(new File(path, filename));
            System.out.println("上传成功");
            return  filename;
        }
        System.out.println("上传失败");
        return "上传失败";

    }


}
